package com.flying.oop.classmember.method;

/**
 * @ClassName: Methoddemo6
 * @createDate: 2023/6/21 11:36
 * @author: liu
 * @description:递归调用
 * 递归调用: 一个方法体内调用它自身
 * 方法递归包含了一种隐式的循环，它会重复执行某段代码，但这种重复执行无须循环控制。
 * 递归一定要向已知方向(出口)递归，否则这种递归就变成了无穷递归，类似于死循环。
 */
public class Methoddemo6 {
    static int count=0;
    public static void main(String[] args) {
//        tellstory();
//        binomial();
        System.out.println(demo(20));

    }
    public static void tellstory(){
        count++;
        System.out.println("从前有条河");
        System.out.println("河边有座庙");
        System.out.println("庙里有个老和尚");
        System.out.println("还有一个小和尚");
        System.out.println("老和尚在给小和尚讲故事");
        if(count>=5) return;
        tellstory();
    }

    public static void binomial(){
        recursion(10);
    }

    public static int recursion(int k){
        count++;
        System.out.println("count1:"+count+"  k"+k);
        if (k<=0){
            return 0;
        }
        return recursion(k-1)+recursion(k-2);
    }

    public static int demo(int num){
        if (num==0) return 1;
        return num+demo(num-1);

    }
}
